package com.nuoniu.sibanyun.service.crm.call;

import com.baomidou.mybatisplus.extension.service.IService;
import com.nuoniu.sibanyun.entity.crm.CrmGoodsOrder;
import com.nuoniu.sibanyun.entity.crm.call.CrmCallMinutes;
import com.nuoniu.sibanyun.entity.crm.call.vo.CrmCallMinutesSimpleVo;

import java.util.List;

/**
 * <p>
 * 客户管理-呼叫分钟数 服务类
 * </p>
 *
 * @author 白强
 * @since 2022-05-25
 */
public interface ICrmCallMinutesService extends IService<CrmCallMinutes> {

    /**
     * 校验是否 有记录
     * @param companyId
     */
    CrmCallMinutes checkByCompanyId(Integer companyId);

    /**
     * 查询 当前租户 分钟数情况
     * @return
     */
    CrmCallMinutes getByCompany(Integer companyId,Boolean isListDetail);

    /**
     * 根据商品订单 更新 分钟数
     * @param crmGoodsOrder
     */
    void changeFromGoodsOrder(CrmGoodsOrder crmGoodsOrder);

    /**
     * 记录当前分钟数 使用情况（月初执行）
     */
    void recordCrmCallMinutes();

    /**
     * 批量 更新 分钟数记录以及初始化当月数据
     * @param crmCallMinutes
     */
    void batchAddRecordCrmCallMinutes(List<CrmCallMinutes> crmCallMinutes);

    /**
     * 关闭 外呼功能
     * @param companyId
     */
    void closeCallFunction(Integer companyId);

    /**
     * 打开 外呼功能
     * @param companyId
     */
    void openCallFunction(Integer companyId);

    /**
     * 自动续费 套餐（异步定时任务）
     */
    void autoRenewalGoodsSetting();

    /**
     * 批量 续费
     * @param callMinutesSimpleVos
     */
    void batchRenewalGoodsSetting(List<CrmCallMinutesSimpleVo> callMinutesSimpleVos);

    /**
     * 当前账户是否可以外呼
     * @return
     */
    String isCallEnable();



}
